//@author A0103459H

#pragma once

#ifndef DATETIME_H
#define DATETIME_H

#include <iostream>
#include <string>
#include <ctime>
#include <time.h>
#include <chrono>
#include <regex>
#include <sstream>


class DateTime
{
private:
	int _year;
	int _month;
	int _day;
	int _hour;
	int _minute;
	int _sec;

private: 
	static const std::string SLASH;
	static const std::string SPACE;
	static const std::string COLON;
	static const std::string ZERO_STRING;
	static const int ZERO=0;
	static const int DEFAULT_VALUE = 0;

public:

	// Constructors
	DateTime(void);
	DateTime(int year, int month, int day);
	DateTime(int year, int month, int day, int hour, int minute);
	DateTime(int year,int month,int day,int hour,int minute,int second);
	
	//Destructor
	~DateTime(void);

	//Functions
	int getYear();
	int getMonth();
	int getDay();
	int getHour();
	int getMinute();
	int getSec();
	std::string getDateTimeString();
	int compareTo(DateTime another);

	void setDateTime(int year, int month, int day);
	void setDateTime(int year, int month, int day, int hour, int minute);
	void setDateTime(int year, int month, int day, int hour, int minute, int second);
	void setYear(int year);	
	void setMonth(int month);	
	void setDay(int day);	
	void setHour(int hour);	
	void setMinute(int minute);	
	void setSec(int second);

	std::string getDayNameString();

private:
	std::string addZeroFromFront(std::string inString);
};

#endif
